package cn.bbs.ba.util;

import java.math.BigDecimal;
import java.util.Random;

import org.apache.commons.lang.StringUtils;

public class CommonUntil {
    
    /**
     * obj to String
     * @param obj
     * @return
     */
    public static String objToString(Object pObject) {
        String strValue = "";
        try {
            strValue = pObject.toString();
        }
        catch (Exception e) {
            strValue = "";
        }
        if ("null".equals(strValue)) {
        	strValue = "";
        }
        return strValue;
    }
    
    /**
     * 
     * @param pObject
     * @return
     */
    public static BigDecimal objToBigDecimal(final Object pObject) {
        BigDecimal result = null;
        String str = "";

        if (pObject != null) {
            str = pObject.toString();
        }
        else {
            str = "";
        }

        try {
            if ("".equals(str)) {
                return new BigDecimal(0);
            }
            else {
                result = new BigDecimal(str);
            }
        }
        catch (NumberFormatException e) {
            return BigDecimal.ZERO;
        }
        return result;
    }
    
    public static int objToint(final Object pObject) {
        int intReturn = 0;
        int intIndex = 0;
        try {
	        if (pObject != null && !("".equals(pObject.toString().trim()))) {
	            String strObject = pObject.toString().trim();
	            intIndex = strObject.indexOf(".");
	            if (intIndex == -1) {
	                intReturn = new Integer(strObject).intValue();
	            }
	            else {
	                intReturn = new Integer(strObject.substring(0, intIndex)).intValue();
	            }
	        }
	        else {
	            intReturn = 0;
	        }
        }catch (Exception e) {
        	intReturn = 0;
        }
        return intReturn;
    }
    
    public static boolean isEmpty(String str) {
    	if (str == null || "".equals(str) || "null".equals(str)) {
    		return true;
    	}
    	return false;
    }
    
    public static String add(String str1, String str2) {
    	return objToString(objToBigDecimal(str1).add(objToBigDecimal(str2)));
    }
    
    public static String subtract(String str1, String str2) {
    	return objToString(objToBigDecimal(str1).subtract(objToBigDecimal(str2)));
    }
    
    public static int compare(String str1, String str2) {
    	if (StringUtils.isEmpty(str1) || "null".equals(str1)) {
    		str1 = "0";
    	}
    	if (StringUtils.isEmpty(str2) || "null".equals(str2)) {
    		str2 = "0";
    	}
    	BigDecimal big1 = new BigDecimal(str1);
    	BigDecimal big2 = new BigDecimal(str2);
    	int iRet = big1.compareTo(big2);
    	if (iRet > 0) {
    		return 1;
    	}
    	else if(iRet < 0) {
    		return -1;
    	}
    	
    	return 0;
    }
    
    public static String divide(String str1, String str2) {
    	if (StringUtils.isEmpty(str1) || "null".equals(str1)) {
    		str1 = "0";
    	}
    	if (StringUtils.isEmpty(str2) || "null".equals(str2)) {
    		str2 = "0";
    	}
    	BigDecimal big1 = new BigDecimal(str1);
    	BigDecimal big2 = new BigDecimal(str2);
    	BigDecimal iRet = big1.divide(big2, 2, BigDecimal.ROUND_HALF_EVEN);
    	return iRet.toString();
    }
    
    public static String multiply(String str1, String str2) {
    	if (StringUtils.isEmpty(str1) || "null".equals(str1)) {
    		str1 = "0";
    	}
    	if (StringUtils.isEmpty(str2) || "null".equals(str2)) {
    		str2 = "0";
    	}
    	BigDecimal big1 = new BigDecimal(str1);
    	BigDecimal big2 = new BigDecimal(str2);
    	BigDecimal iRet = big1.multiply(big2);
    	return iRet.toString();
    }
    
    public static String formatTime(String strTime) {
    	StringBuilder strBu = new StringBuilder();
    	strBu.append(StringUtils.substring(strTime, 0, 4));
    	strBu.append("/");
    	strBu.append(StringUtils.substring(strTime, 4, 6));
    	strBu.append("/");
    	strBu.append(StringUtils.substring(strTime, 6, 8));
    	strBu.append("  ");
    	strBu.append(StringUtils.substring(strTime, 8, 10));
    	strBu.append(":");
    	strBu.append(StringUtils.substring(strTime, 10, 12));
    	strBu.append(":");
    	strBu.append(StringUtils.substring(strTime, 12));
    	return  strBu.toString();
    }
    
	/**
	 * @return
	 */
	public static String getCode() {
		Random random = new Random();
		String sRand = "";
		for (int i = 0; i < 15; i++) {
			String rand = String.valueOf(random.nextInt(10));
			sRand += rand;
		}
		return sRand;
	}
	
	/**
	 * 得到开始位置
	 * @param pageNumber
	 * @return
	 */
	public static String getPageStart(String pageNumber) {
		// 如果是第一页
		if ("0".equals(pageNumber)) {
			return "0";
		}
		return CommonUntil.subtract(CommonUntil.multiply(pageNumber, "10"), "1");
	}
}
